/**
 * IIFE模式: 匿名函数自调用(闭包)
 * IIFE: immediately-invoked function expression(立即调用函数表达式)a
 * 作用： 数据是私有的 外部只能通过暴露的方法操作
 * 问题: 如果当前这个模块依赖另一个模块怎么办?
 */

((w)=>{
  //内部的私有数据 不允许外部修改
  let data = 'RiYu';

  function test() {
    console.log(data);
  }

  function test2() {
    console.log(data.toUpperCase());
  }

  let module1 = {
    test: test,
    test2
  }
  //把test挂在window对象上 使得外部可以调用test方法
  /*window.test = test;
  window.test2 = test2;*/
  w.module1 = module1;
})(window)